<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
	<title>Special Characters</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<style type="text/css">
#spcharTable {
	border: 1px solid black ;
	margin-right: auto;
	margin-left: auto;
}
.spCharTableCell {
	text-align: center;
	border: 1px solid gray;
	padding : 2px;
	font-size : 16px;
}
.links {
	float : left;
	padding : 0 10px 0 0;
}
</style>
	<script language="JavaScript" type="text/javascript">
	<!--
var spChar = new Array();
var text = new Array;
var htmlChar;
var navF = parent.nav.document.getElementById("textBox");
	function selectSpChar(idChar) {
	htmlChar = '&#' + idChar + ';';
	spChar.push(htmlChar);
	text.push(String.fromCharCode(idChar));
//	navF.value = text;
	navF.innerHTML = text.join('');
	}
	
	function InitSpChar() {
		if (document.getElementsByTagName)
			var x = document.getElementsByTagName('TD');
		else if (document.all)
			var x = document.all.tags('TD');
		for (var i=0; i < x.length; i++) {
			x[i].onmouseover = over;
			x[i].onmouseout = out;
			x[i].onclick = click;
		}
	}
	
	function over() {
		this.style.border = '1px solid red';
	}
	
	function out() {
		this.style.border = '1px solid gray';
	}
	
	function click() {
		selectSpChar(this.id);
	}
	//-->
	</script>
</head>
<body bgcolor="white" onLoad="InitSpChar()">
<table id="spCharTable" cellpadding=0 cellspacing=0 border=0 >
<?php
// Create unicode tables.  Which characters are available is modelled on what is available in my OO.org 2 beta....
$numColumns = 20;
$index = 0;
$pString = '';
// Basic Latin
for($char = 33; $char <= 126; $char++)
{
	if(!$index)
		$pString .= "<tr align=\"center\">";
	if($index == $numColumns)
	{
		$pString .= "</tr>";
		$index = 1;
	}
	else
		++$index;
	if($char == 33)
		$pString .= "<td class=\"spCharTableCell\" id=\"$char\"><a name=\"basicLatin\">&#$char;</td>";
	else
		$pString .= "<td class=\"spCharTableCell\" id=\"$char\">&#$char;</td>";
}
// Latin 1 Supplement
for($char = 161; $char <= 255; $char++)
{
	if(($char == 173) || ($char == 144) || ($char == 157))
		continue;
	if(!$index)
		$pString .= "<tr align=\"center\">";
	if($index == $numColumns)
	{
		$pString .= "</tr>";
		$index = 1;
	}
	else
		++$index;
	if($char == 161)
		$pString .= "<td class=\"spCharTableCell\" id=\"$char\"><a name=\"latin1\">&#$char;</td>";
	else
		$pString .= "<td class=\"spCharTableCell\" id=\"$char\">&#$char;</td>";
}
// Latin Extended A
for($char = 256; $char <= 383; $char++)
{
	if(!$index)
		$pString .= "<tr align=\"center\">";
	if($index == $numColumns)
	{
		$pString .= "</tr>";
		$index = 1;
	}
	else
		++$index;
	if($char == 256)
		$pString .= "<td class=\"spCharTableCell\" id=\"$char\"><a name=\"latinExtendedA\">&#$char;</td>";
	else
		$pString .= "<td class=\"spCharTableCell\" id=\"$char\">&#$char;</td>";
}
// Latin Extended B
for($char = 399; $char <= 511; $char++)
{
	if(($char == 400) || ($char == 401) || (($char >= 402) && ($char <= 415))
	 || (($char >= 418) && ($char <= 430)) || (($char >= 433) && ($char <= 461))
	 || (($char >= 477) && ($char <= 505)))
		continue;
	if(!$index)
		$pString .= "<tr align=\"center\">";
	if($index == $numColumns)
	{
		$pString .= "</tr>";
		$index = 1;
	}
	else
		++$index;
	if($char == 399)
		$pString .= "<td class=\"spCharTableCell\" id=\"$char\"><a name=\"latinExtendedB\">&#$char;</td>";
	else
		$pString .= "<td class=\"spCharTableCell\" id=\"$char\">&#$char;</td>";
}
// IPA Extensions
for($char = 601; $char <= 601; $char++)
{
	if(!$index)
		$pString .= "<tr align=\"center\">";
	if($index == $numColumns)
	{
		$pString .= "</tr>";
		$index = 1;
	}
	else
		++$index;
	if($char == 601)
		$pString .= "<td class=\"spCharTableCell\" id=\"$char\"><a name=\"IPA\">&#$char;</td>";
	else
		$pString .= "<td class=\"spCharTableCell\" id=\"$char\">&#$char;</td>";
}
// Spacing Modifier Letters
for($char = 710; $char <= 733; $char++)
{
	if(($char >= 712) && ($char <= 727))
		continue;
	if(!$index)
		$pString .= "<tr align=\"center\">";
	if($index == $numColumns)
	{
		$pString .= "</tr>";
		$index = 1;
	}
	else
		++$index;
	if($char == 710)
		$pString .= 
		"<td class=\"spCharTableCell\" id=\"$char\"><a name=\"spacingModifierLetters\">&#$char;</td>";
	else
		$pString .= "<td class=\"spCharTableCell\" id=\"$char\">&#$char;</td>";
}
// Combining Diacritical Marks
for($char = 768; $char <= 803; $char++)
{
	if(($char != 768) && ($char != 769) && ($char != 771) && ($char != 777) && ($char != 803))
		continue;
	if(!$index)
		$pString .= "<tr align=\"center\">";
	if($index == $numColumns)
	{
		$pString .= "</tr>";
		$index = 1;
	}
	else
		++$index;
	if($char == 768)
		$pString .= 
		"<td class=\"spCharTableCell\" id=\"$char\"><a name=\"combiningDiacriticalMarks\">&#$char;</td>";
	else
		$pString .= "<td class=\"spCharTableCell\" id=\"$char\">&#$char;</td>";
}
// Greek and Coptic
for($char = 894; $char <= 974; $char++)
{
	if((($char >= 895) && ($char <= 899)) || ($char == 907) || ($char == 909) || ($char == 930))
		continue;
	if(!$index)
		$pString .= "<tr align=\"center\">";
	if($index == $numColumns)
	{
		$pString .= "</tr>";
		$index = 1;
	}
	else
		++$index;
	if($char == 894)
		$pString .= "<td class=\"spCharTableCell\" id=\"$char\"><a name=\"basicGreek\">&#$char;</td>";
	else
		$pString .= "<td class=\"spCharTableCell\" id=\"$char\">&#$char;</td>";
}
// Cyrillic
for($char = 1025; $char <= 1257; $char++)
{
	if(($char == 1120) || ($char == 1121) || (($char >= 1124) && ($char <= 1129))
	 || (($char >= 1132) && ($char <= 1137)) || (($char >= 1142) && ($char <= 1167)) || ($char == 1221) 
	 || ($char == 1222) || ($char == 1225)  || ($char == 1226)  || ($char == 1229) 
	 || ($char == 1230) || (($char >= 1234) && ($char <= 1237)) || ($char == 1239)
	 || (($char >= 1242) && ($char <= 1249)) || (($char >= 1252) && ($char <= 1255)))
		continue;
	if(!$index)
		$pString .= "<tr align=\"center\">";
	if($index == $numColumns)
	{
		$pString .= "</tr>";
		$index = 1;
	}
	else
		++$index;
	if($char == 1025)
		$pString .= "<td class=\"spCharTableCell\" id=\"$char\"><a name=\"cyrillic\">&#$char;</td>";
	else
		$pString .= "<td class=\"spCharTableCell\" id=\"$char\">&#$char;</td>";
}
// Basic Hebrew
for($char = 1456; $char <= 1524; $char++)
{
	if((($char >= 1476) && ($char <= 1487)) || (($char >= 1515) && ($char <= 1519)))
		continue;
	if(!$index)
		$pString .= "<tr align=\"center\">";
	if($index == $numColumns)
	{
		$pString .= "</tr>";
		$index = 1;
	}
	else
		++$index;
	if($char == 1456)
		$pString .= "<td class=\"spCharTableCell\" id=\"$char\"><a name=\"basicHebrew\">&#$char;</td>";
	else
		$pString .= "<td class=\"spCharTableCell\" id=\"$char\">&#$char;</td>";
}
// Arabic
for($char = 1548; $char <= 1790; $char++)
{
	if((($char >= 1549) && ($char <= 1562)) || (($char >= 1564) && ($char <= 1566)) || ($char == 1568)
	|| (($char >= 1595) && ($char <= 1599)) || (($char >= 1625) && ($char <= 1631))
	 || ($char == 1774) || ($char == 1775))
		continue;
	if(!$index)
		$pString .= "<tr align=\"center\">";
	if($index == $numColumns)
	{
		$pString .= "</tr>";
		$index = 1;
	}
	else
		++$index;
	if($char == 1548)
		$pString .= "<td class=\"spCharTableCell\" id=\"$char\"><a name=\"arabic\">&#$char;</td>";
	else
		$pString .= "<td class=\"spCharTableCell\" id=\"$char\">&#$char;</td>";
}
// Latin Extended Additional
for($char = 7808; $char <= 7929; $char++)
{
	if(($char >= 7814) && ($char <= 7839))
		continue;
	if(!$index)
		$pString .= "<tr align=\"center\">";
	if($index == $numColumns)
	{
		$pString .= "</tr>";
		$index = 1;
	}
	else
		++$index;
	if($char == 7808)
		$pString .= 
		"<td class=\"spCharTableCell\" id=\"$char\"><a name=\"latinExtendedAdditional\">&#$char;</td>";
	else
		$pString .= "<td class=\"spCharTableCell\" id=\"$char\">&#$char;</td>";
}
// General Punctuation
for($char = 8204; $char <= 8260; $char++)
{
	if(($char == 8208) || ($char == 8209) || ($char == 8214) || ($char == 8223) || ($char == 8227)
	 || ($char == 8228) || ($char == 8229) || (($char >= 8231) && ($char <= 8239)) || ($char == 8241)
	 || (($char >= 8244) && ($char <= 8248)) || ($char == 8251) || (($char >= 8253) && ($char <= 8259)))
		continue;
	if(!$index)
		$pString .= "<tr align=\"center\">";
	if($index == $numColumns)
	{
		$pString .= "</tr>";
		$index = 1;
	}
	else
		++$index;
	if($char == 8204)
		$pString .= 
		"<td class=\"spCharTableCell\" id=\"$char\"><a name=\"generalPunctuation\">&#$char;</td>";
	else
		$pString .= "<td class=\"spCharTableCell\" id=\"$char\">&#$char;</td>";
}
// Currency Symbols
for($char = 8355; $char <= 8364; $char++)
{
	if(($char == 8357) || ($char == 8358) || ($char == 8360) || ($char == 8361))
		continue;
	if(!$index)
		$pString .= "<tr align=\"center\">";
	if($index == $numColumns)
	{
		$pString .= "</tr>";
		$index = 1;
	}
	else
		++$index;
	if($char == 8355)
		$pString .= 
		"<td class=\"spCharTableCell\" id=\"$char\"><a name=\"currencyLetter\">&#$char;</td>";
	else
		$pString .= "<td class=\"spCharTableCell\" id=\"$char\">&#$char;</td>";
}
// Letterlike Symbols (same internal link as above)
for($char = 8453; $char <= 8494; $char++)
{
	if(($char != 8453) && ($char != 8467) && ($char != 8470) && ($char != 8482) && ($char != 8486)
	 && ($char != 8494))
		continue;
	if(!$index)
		$pString .= "<tr align=\"center\">";
	if($index == $numColumns)
	{
		$pString .= "</tr>";
		$index = 1;
	}
	else
		++$index;
	$pString .= "<td class=\"spCharTableCell\" id=\"$char\">&#$char;</td>";
}
// Number Forms
for($char = 8531; $char <= 8542; $char++)
{
	if(($char != 8531) && ($char != 8532) && ($char != 8539) && ($char != 8540) && ($char != 8541)
	 && ($char != 8542))
		continue;
	if(!$index)
		$pString .= "<tr align=\"center\">";
	if($index == $numColumns)
	{
		$pString .= "</tr>";
		$index = 1;
	}
	else
		++$index;
	if($char == 8531)
		$pString .= 
		"<td class=\"spCharTableCell\" id=\"$char\"><a name=\"numberArrow\">&#$char;</td>";
	else
		$pString .= "<td class=\"spCharTableCell\" id=\"$char\">&#$char;</td>";
}
// Arrows (same internal link as above)
for($char = 8592; $char <= 8616; $char++)
{
	if(($char != 8592) && ($char != 8593)&& ($char != 8594) && ($char != 8595) && ($char != 8596)
	 && ($char != 8597) && ($char != 8616))
		continue;
	if(!$index)
		$pString .= "<tr align=\"center\">";
	if($index == $numColumns)
	{
		$pString .= "</tr>";
		$index = 1;
	}
	else
		++$index;
	$pString .= "<td class=\"spCharTableCell\" id=\"$char\">&#$char;</td>";
}
// Mathematical Operators
for($char = 8706; $char <= 8805; $char++)
{
	if((($char >= 8707) && ($char <= 8709)) || (($char >= 8711) && ($char <= 8718))
	|| ($char == 2210) || ($char == 8723) || ($char == 8724) || (($char >= 8726) && ($char <= 8728))
	|| (($char >= 8731) && ($char <= 8733)) || (($char >= 8736) && ($char <= 8744)) || ($char == 8746)
	|| (($char >= 8748) && ($char <= 8775)) || (($char >= 8777) && ($char <= 8800))
	|| ($char == 8802) || ($char == 8803))
		continue;
	if(!$index)
		$pString .= "<tr align=\"center\">";
	if($index == $numColumns)
	{
		$pString .= "</tr>";
		$index = 1;
	}
	else
		++$index;
	if($char == 8706)
		$pString .= 
		"<td class=\"spCharTableCell\" id=\"$char\"><a name=\"mathematicalOperator\">&#$char;</td>";
	else
		$pString .= "<td class=\"spCharTableCell\" id=\"$char\">&#$char;</td>";
}
// alphabetic Presentation Forms
for($char = 64257; $char <= 64335; $char++)
{
	if((($char >= 64259) && ($char <= 64284)) || (($char >= 64289) && ($char <= 64297)) || ($char == 64311)
	 || ($char == 64317) || ($char == 64319) || ($char == 64322) || ($char == 64325))
		continue;
	if(!$index)
		$pString .= "<tr align=\"center\">";
	if($index == $numColumns)
	{
		$pString .= "</tr>";
		$index = 1;
	}
	else
		++$index;
	if($char == 64257)
		$pString .= 
		"<td class=\"spCharTableCell\" id=\"$char\"><a name=\"alphabeticPresentation\">&#$char;</td>";
	else
		$pString .= "<td class=\"spCharTableCell\" id=\"$char\">&#$char;</td>";
}
// Arabic Presentation Forms A
for($char = 64336; $char <= 65010; $char++)
{
	if((($char >= 64434) && ($char <= 64466)) || (($char >= 64488) && ($char <= 64507))
	 || (($char >= 64512) && ($char <= 64605)) || (($char >= 64611) && ($char <= 64829))
	 || (($char >= 64832) && ($char <= 645009)))
		continue;
	if(!$index)
		$pString .= "<tr align=\"center\">";
	if($index == $numColumns)
	{
		$pString .= "</tr>";
		$index = 1;
	}
	else
		++$index;
	if($char == 64336)
		$pString .= 
		"<td class=\"spCharTableCell\" id=\"$char\"><a name=\"arabicPresentationA\">&#$char;</td>";
	else
		$pString .= "<td class=\"spCharTableCell\" id=\"$char\">&#$char;</td>";
}
// Arabic Presentation Forms B
for($char = 65152; $char <= 65276; $char++)
{
	if(!$index)
		$pString .= "<tr align=\"center\">";
	if($index == $numColumns)
	{
		$pString .= "</tr>";
		$index = 1;
	}
	else
		++$index;
	if($char == 65152)
		$pString .= 
		"<td class=\"spCharTableCell\" id=\"$char\"><a name=\"arabicPresentationB\">&#$char;</td>";
	else
		$pString .= "<td class=\"spCharTableCell\" id=\"$char\">&#$char;</td>";
}
print $pString;
?>
</tr>
</table>
</body>
</html>
